package util

import (
	"encoding/json"
	"flag"
	"log"
	"os"
)

/**
 * @Author：落叶知秋
 * @Date：15:08 2022/6/16
 * @note：
 **/

// Cfg 定义一个全局变脸
var Cfg Config //解码器必须使用公有变量
// Config json表情
type Config struct {
	Player           string `json:"player"`
	Ghost            string `json:"ghost"`
	Wall             string `json:"wall"`
	Dot              string `json:"dot"`
	Pill             string `json:"pill"`
	Death            string `json:"death"`
	Win              string `json:"win"`
	Space            string `json:"space"`
	UseEmoji         bool   `json:"use_emoji"`
	GhostBlue        string `json:"ghostBlue"`
	pillDurationSecs int    `json:"pill_duration_secs"`
}

//flag string 方法返回一个 保存了flag的字符串指针
var configFile = flag.String("config_file", "config.json", "path to custom configuration file")

func init() {
	flag.Parse()
	err := loadConfig(*configFile)
	if err != nil {
		log.Println("failed to load configuration:", err)
		return
	}
}
func loadConfig(file string) (err error) {
	f, err := os.Open(file)
	if err != nil {
		return err
	}
	defer f.Close()
	//NewDecoder  创建一个从f读取并解码的json对象*decoder
	decoder := json.NewDecoder(f)
	err = decoder.Decode(&Cfg)
	if err != nil {
		return err
	}

	return nil
}

var Player Sprite //声明一个玩家
// Sprite 玩家
type Sprite struct {
	Row      int //行
	Col      int //列
	StartRow int
	StartCol int
}

//定义鬼魂
var Ghosts []*Ghost //声明多个幽灵
type GhostStatus string

const ( //定义两个常量表示状态
	GhostStatusNormal GhostStatus = "Normal"
	GhostStatusBlue   GhostStatus = "Blue"
)

type Ghost struct {
	Position Sprite
	Status   GhostStatus
}
